﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sebrae.Academico.Trilhas.BM.Classes;
using Sebrae.Academico.InfraEstrutura.Seguranca.Autenticacao;
using Sebrae.Academico.Trilhas.Dominio.Classes;
using Sebrae.Academico.Trilhas.BM.Enumeracao;

namespace Sebrae.Academico.Trilhas.BP.Services
{
    public class MatriculaTrilhaServices: BusinessProcessServicesBase
    {

        private BMTrilha trilhaBM;
        private BMTrilhaNivel trilhaNivelBM;
        private BMUsuarioTrilha usuarioTrilhaBM;
        private BMStatusMatricula statusMatricula;

        public MatriculaTrilhaServices(): base()
        {

        }

        public void CadastrarUsuarioMatricula(int pID_Usuario, int pID_Trilha, int pID_TrilhaNivel) 
        {
            BMUsuario usuarioBM = new BMUsuario(unitOfWork);
            
            BMUsuarioTrilha usuarioTrilha = new BMUsuarioTrilha(unitOfWork);
            
        }

       

        public void RegistrarMatriculatrilha(int pID_Usuario, int pID_Trilha, int pID_TrilhaNivel, string pNomeUsuarioAtualizacao)
        {
           
            usuarioBM = new BMUsuario(unitOfWork);
            Usuario user = usuarioBM.ObterPorId(pID_Usuario);

            trilhaBM = new BMTrilha(unitOfWork);
            Trilha trilha = trilhaBM.ObterPorId(pID_Trilha);

            trilhaNivelBM = new BMTrilhaNivel(unitOfWork);
            TrilhaNivel trilhaNivel = trilhaNivelBM.ObterporID(pID_TrilhaNivel);

            statusMatricula = new BMStatusMatricula(unitOfWork);
            StatusMatricula stMatricula = statusMatricula.ObterPorId((int)enumStatusMatricula.Inscrito);

            UsuarioTrilha userTrilha = new UsuarioTrilha()
            {
                DtInicio = DateTime.Now,
                DtLimite = DateTime.Now.AddDays(trilhaNivel.QuantidadeDiasPrazo),
                NivelOcupacional = user.NivelOcupacional,
                Trilha = trilha,
                Uf = user.UF,
                TrilhaNivel = trilhaNivel,
                Usuario = user,
                StatusMatricula = stMatricula,
                NomeUsuarioAtualizacao = pNomeUsuarioAtualizacao,
                DataAlteracao = DateTime.Now
                
            };

            usuarioTrilhaBM = new BMUsuarioTrilha(unitOfWork);
            usuarioTrilhaBM.Salvar(userTrilha);
            
            
        }
    }
}
